package main

import "fmt"

/*
所有常量的运算都可以在编译期完成，这样可以减少运行时的工作,提升程序运行效率
*/
func main() {
	// 定义常量
	const x = 123

	//定义多个常量
	const (
		e  = 2.71
		pi = 3.14
	)

	//如果是批量声明的常量，除了第一个外其它的常量右边的初始化表达式都可以省略，
	//如果省略初始化表达式则表示使用前面常量的初始化表达式写法，对应的常量类型也一样的
	const (
		a = 1
		b
		c = 2
		d
	)
	fmt.Println(a, b, c, d) // "1 1 2 2"

	// iota 常量生成器
	iotaInit()
	iotaInit2()
}

func iotaInit() {
	const (
		a = iota
		b
		c
		d
	)
	fmt.Println(a, b, c, d) // "0 1 2 3"
}
func iotaInit2() {
	const (
		a = 1 << iota
		b
		c
		d
	)
	fmt.Println(a, b, c, d) // "1 2 4 8"
}
